/**
 * User: yuh
 * Date: 16-2-4
 * Time: 下午5:21
 * web mercator转换工具
 */

define(
    [
        "dojo/_base/declare"
    ],
    function (declare) {
        return {
            /**
             * 墨卡托转经度
             */
            latlng_mercator_x:function (x) {
                return x / 20037508.34 * 180;
            },

            /**
             * 墨卡托转纬度
             */
            latlng_mercator_y:function (y) {
                var my = y / 20037508.34 * 180;
                y = 180 / Math.PI * (2 * Math.atan(Math.exp(my * Math.PI / 180)) - Math.PI / 2);
                return y;
            },

            /**
             * 经度转墨卡托
             */
            mercator_latlng_x:function (x) {
                return (x / 180.0) * 20037508.34;
            },

            /**
             * 纬度转墨卡托
             */
            mercator_latlng_y:function (y) {
                if (y > 85.05112) {
                    y = 85.05112;
                }

                if (y < -85.05112) {
                    y = -85.05112;
                }

                y = (Math.PI / 180.0) * y;
                var tmp = Math.PI / 4.0 + y / 2.0;
                return 20037508.34 * Math.log(Math.tan(tmp)) / Math.PI;
            }
        };
    });